
" -------------------   vimrc和_vimrc共有部分  ---------------------

" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on

nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" tab相关
nnoremap <Leader>t :tabnew 
nnoremap <C-n> gt
nnoremap <C-p> gT
" 窗口相关
nnoremap <Leader>v :vsplit 
nnoremap <Leader>l :split 
nnoremap _ <C-w><
nnoremap + <C-w>>
nnoremap <leader>= <C-w>=
" 按ctrl+u将光标所在单词进行大小写切换
nnoremap <C-u> :call LowerCase()<cr>

nnoremap ; :call GoCurrentLine()<cr>
nnoremap ;n :set norelativenumber<CR>:set nonu<CR>
nnoremap ;s :set nohlsearch<CR>

nnoremap <leader>rc :%s//gc<Left><Left><Left>
nnoremap <leader>rr :%s//g<Left><Left>

" 按ctrl+u将光标所在单词进行大小写切换
inoremap <C-u> <esc>:call LowerCase()<cr>a

vnoremap <leader>rc :s//gc<Left><Left><Left>
vnoremap <leader>rr :s//g<Left><Left>




"vim 命令行相关
cnoremap <C-A> <Home>
cnoremap <C-E> <End>
cnoremap <C-B> <Left>
cnoremap <C-F> <Right>
cnoremap <C-D> <Delete>


" 通过不同的文件设置注释，需要定义localleader 如： let maplocalleader=","
autocmd FileType javascript,java nnoremap <buffer> <localleader>// :call Annotate("//")<cr>
autocmd FileType sh nnoremap <buffer> <localleader>// :call Annotate("#")<cr>
"视图模式下可注释多行
autocmd FileType javascript,java vnoremap <buffer> <localleader>// :call Annotate("//")<cr>
autocmd FileType sh vnoremap <buffer> <localleader>// :call Annotate("#")<cr>



"注释函数
function! Annotate(c)
  let line=getline(".")
  let isA=strpart(line,0,len(a:c))
  if(a:c==isA)
    let ret=strpart(line,len(a:c))
    call setline(".",ret)
  else
    let ret=a:c.line
    echo ret
    call setline(".",ret)
  endif
endfunction


"大小写转换
function! LowerCase()
  "获取光标所在单词
  let word=expand('<cword>')
  let ic=&ignorecase
  "如果忽略了大小写，则临时关闭
  if(ic==1)
    set noignorecase
  endif
  "判断单词中是否包含大写字母
  if(match(word,'[A-Z]'))
    normal gUiwea
  else
    normal guiwea
  endif
  if(ic==1)
    set ignorecase
  endif
  echo ic
endfunction
" 在当前行进行一次跳转，方便后面使用ctrl+o 跳回来
function! GoCurrentLine()
  let line=line(".")
  execute "normal! ".line."G"
endfunction


" 加载vundel插件配置
if filereadable(expand("~/.vundle.vimrc"))
  source ~/.vundle.vimrc
endif



"自动提示代码设置
"---------------------java begin-------------------
autocmd FileType java abbr main;; public static void main(String[] args){<CR>}<esc>O
autocmd FileType java abbr sout;; System.out.println("");<esc>2hi
autocmd FileType java abbr if;; if(){<CR>}<esc>O<esc>k$F)i
autocmd FileType java abbr fort;; for (int i = 0; i < ; i++) {<CR>}<esc>O<esc>k$F;i
autocmd FileType java abbr tc;; try {<CR>} catch (Exception ex) {<CR> ex.printStackTrace();<CR>}<esc>hx3ko
autocmd FileType java abbr psf;; public static final
autocmd FileType java abbr sc;; System.currentTimeMillis()
"---------------------java end-------------------

"---------------------javascript begin-------------------
autocmd FileType javascript abbr if;; if(){<CR>}<esc>O<esc>k$F)i
autocmd FileType javascript abbr for;; for (var i = 0; i < ; i++) {<CR>}<esc>O<esc>k$F;i
autocmd FileType javascript abbr cs;; console.log("");<esc>2hi
"---------------------javascript end-------------------

" -------------------   vimrc和_vimrc共有部分  ---------------------
